﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EntityLayer;
using BusinessLayer.Interface;
using BusinessLayer.Facade;


namespace PresentationLayer
{
    public partial class wfrmAsignacionAbogado : System.Web.UI.Page
    {
        private clsFacadeAsignacionAbogado FacadeAsignacionAbogado = null;
        private IEnumerable<Object> lista = null;
        private List<SGP_LEGAJO> listarLegajo = null;
        private String msg, titulo;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ListarLegajos();
            }
        }

        private void ListarLegajos()
        {
            try
            {
                lista = new List<Object>();
                FacadeAsignacionAbogado = new clsFacadeAsignacionAbogado();
                lista = FacadeAsignacionAbogado.listarLegajosNoAnulados();

                if (lista == null || lista.Count() == 0) { return; }

                dgvLegajos.DataSource = lista;
                dgvLegajos.DataBind();
            }
            catch (Exception ex)
            {
                titulo = "ListarLegajos";
                MostrarComentario(ex.Message, titulo);
            }
        }

        protected void dgvLegajos_AfterPerformCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewAfterPerformCallbackEventArgs e)
        {
            ListarLegajos();
        }

        protected void dgvLegajos_PageIndexChanged(object sender, EventArgs e)
        {
            ListarLegajos();
        }

        private void MostrarComentario(String msg, String titulo = "Mensaje")
        {
            lblMensaje.Text = msg;
            pcMensaje.HeaderText = titulo;
            pcMensaje.ShowOnPageLoad = true;
        }

        protected void btnAsigAbogAsignar_Click(object sender, EventArgs e)
        {
            AsignarAbogado();
        }

        private void AsignarAbogado()
        {
            try
            {
                if (cboAbogadoAsig.SelectedItem == null) { MostrarComentario("Debe seleccionar un Abogado a asignar."); return; }
                if (cboAbogadoAsig.SelectedItem.Value.ToString() == "0") { MostrarComentario("Debe seleccionar un Abogado a asignar."); return; }
                int index = dgvLegajos.FocusedRowIndex;
                String CLEG_LEGAJO = dgvLegajos.GetRowValues(index, "CLEG_LEGAJO").ToString();
                String NPER_SECPER = cboAbogadoAsig.SelectedItem.Value.ToString();

                FacadeAsignacionAbogado = new clsFacadeAsignacionAbogado();
                listarLegajo = new List<SGP_LEGAJO>();
                listarLegajo = FacadeAsignacionAbogado.MostrarLegajo(CLEG_LEGAJO);

                if (listarLegajo == null || listarLegajo.Count() == 0) { MostrarComentario("No exiten datos para el legajo seleccionado."); return; }

                Boolean ok = false;

                SGP_LEGAJO objSGP_Legajo = null;

                foreach (var item in listarLegajo)
                {
                    objSGP_Legajo = new SGP_LEGAJO();
                    objSGP_Legajo.CLEG_LEGAJO = item.CLEG_LEGAJO;
                    objSGP_Legajo.CLEG_MODAPE = item.CLEG_MODAPE;
                    objSGP_Legajo.CDIS_DISJUD = item.CDIS_DISJUD;
                    objSGP_Legajo.CTAB_TIPPRO = item.CTAB_TIPPRO;
                    objSGP_Legajo.DLEG_FECREC = item.DLEG_FECREC;
                    objSGP_Legajo.CLEG_CODENT = item.CLEG_CODENT;
                    objSGP_Legajo.CPRL_NUMEXP = item.CPRL_NUMEXP;
                    objSGP_Legajo.CLEG_CODABO = item.CLEG_CODABO;
                    objSGP_Legajo.CLEG_OBSLEG = item.CLEG_OBSLEG;
                    objSGP_Legajo.DPRL_DOCAUT = item.DPRL_DOCAUT;
                    objSGP_Legajo.CTAB_ESTLEG = item.CTAB_ESTLEG;
                    objSGP_Legajo.DLEG_APELEG = item.DLEG_APELEG;
                    objSGP_Legajo.DLEG_FORADM = item.DLEG_FORADM;
                    objSGP_Legajo.CLEG_UBIGEO = item.CLEG_UBIGEO;
                    objSGP_Legajo.DLEG_FECEST = item.DLEG_FECEST;
                    objSGP_Legajo.CLEG_UBIDEP = item.CLEG_UBIDEP;
                    objSGP_Legajo.CLEG_UBIPRO = item.CLEG_UBIPRO;
                    objSGP_Legajo.CLEG_UBIDIS = item.CLEG_UBIDIS;
                    objSGP_Legajo.CPRL_DOCAUT = item.CPRL_DOCAUT;
                    objSGP_Legajo.CLEG_UNIORG = item.CLEG_UNIORG;
                    objSGP_Legajo.CLEG_TITULO = item.CLEG_TITULO;
                    objSGP_Legajo.NPER_SECPER = item.NPER_SECPER;
                    objSGP_Legajo.CTAB_PROCED = item.CTAB_PROCED;
                    objSGP_Legajo.CTAB_MONTIP = item.CTAB_MONTIP;
                    objSGP_Legajo.NPRL_MONPAG = item.NPRL_MONPAG;
                }

                objSGP_Legajo.NPER_SECPER = Convert.ToInt32(NPER_SECPER);

                ok = FacadeAsignacionAbogado.ModificarLegajo(objSGP_Legajo);

                if (ok) { MostrarComentario("Se asignó el abogado correctamente."); ListarLegajos(); }
                else { MostrarComentario("Ocurrió un error al Asignar el Abogado."); }

            }
            catch (Exception ex)
            {
                msg = ex.Message;
                titulo = "AsignarAbogado";
                MostrarComentario(msg, titulo);
            }
        }

        protected void btnAsignarAbogado_Click(object sender, EventArgs e)
        {
            AsignarAbogadoCarga();
        }

        private void AsignarAbogadoCarga()
        {
            try
            {
                if (dgvLegajos.VisibleRowCount == 0) { MostrarComentario("No existe legajo seleccionado para su asignación."); return; }
                if (dgvLegajos.FocusedRowIndex == -1) { MostrarComentario("Debe seleccionar un legajo a asignar."); return; }
                int index = dgvLegajos.FocusedRowIndex;

                CargarAbogadoAsig();
            }
            catch (Exception ex)
            {
                MostrarComentario(ex.Message, "AsignarAbogadoCarga");
            }
        }

        private void CargarAbogadoAsig()
        {
            try
            {
                cboAbogadoAsig.SelectedIndex = -1;

                lista = new List<Object>();
                FacadeAsignacionAbogado = new clsFacadeAsignacionAbogado();
                lista = FacadeAsignacionAbogado.listarAbogadoAsig();

                if (lista == null || lista.Count() == 0) { MostrarComentario("No hay Abogados a Asignar."); return; }

                cboAbogadoAsig.DataSource = lista;
                cboAbogadoAsig.ValueField = "NPER_SECPER";
                cboAbogadoAsig.TextField = "NOM_ABOG";
                cboAbogadoAsig.DataBind();

                pcAsigAbog.ShowOnPageLoad = true;
            }
            catch (Exception ex)
            {
                MostrarComentario(ex.Message, "CargarAbogadoAsig");
            }
        }

    }
}